//基本的增删改查的控制器
Ext.define('Roy.controller.base.CRUDController', {
	extend : 'Ext.app.Controller',

//	getAddWin : Ext.emptyFn,
//	getUpdateWin : Ext.emptyFn,
//	addView : '',
//	updateView : '',
	getMainStore : Ext.emptyFn,
	mainStoreName : '',
	getUpdateForm : function() {
		return this.getUpdateWin().down("form").getForm();
	},
	getAddForm : function() {
		return this.getAddWin().down("form").getForm();
	},
//	getFilterForm : function() {
//		//
//	},
	//查询
	onQuery: function(){
		 var store = this.getMainStore();
		 var data = this.getFilterForm().getForm().getValues();//得到所有的查询条件的值 {code='n',name='',....}
		 store.load({
			 params:data
		 });
	},
	//增加
	onAdd : function(){
		var win = Ext.create(this.addView);
		var button = win.query('button[action=confirm]')[0];
		button.on('click', this.onAddConfirm, this);
		this.beforeShow(win);
		win.show();
	},
	//增加页面提交
	onAddConfirm : function(){
		var win = this.getAddWin();
		var addForm = this.getAddForm();
		data = addForm.getValues();
		var record = Ext.create(this.mainStoreName,data);
		var store = this.getMainStore();
		if(addForm.isValid()){//isValid对markInvalid不起作用
			this.beforeSave(record);//注意用this，否则找不到函数
			record.save({
				 success: function(ed) {
					store.add(ed);//add操作只会在浏览器端加入数据，不会向服务器请求
//					addForm.updateRecord(record);
					win.close();				     
				 },
				 failure: function(ed){
				 },
				 scope : this
			});
		}
	},
	
	beforeSave : function(record){},
	beforeShow : function(win){},
	
	onUpdate: function() {
		var grid = this.getGrid();
		var sm = grid.getSelectionModel();
		if(sm.getCount() == 1) {
			var win = Ext.create(this.updateView);
			var record = sm.getLastSelected();
			var form = this.getUpdateForm();
			form.loadRecord(record);
			var button = win.query('button[action=confirm]')[0];
			button.on('click', this.onUpdateConfirm, this);
//			this.control({
//				'#updateVersionDownloadConfirmId': {
//					click: this.onUpdateConfirm
//				}/*,
//				'#organizationUpdateWinId field[name=code]' :{
//					blur : function(){
//						return this.onCheckOrgCodeUnique(record.getId(),this.getUpdateFormFiled("code"));
//					}
//				}*/
//			});
			win.show();
		}
		else {
			Ext.Msg.alert("提示", "请选择您要更改的记录！");
		}
	},
	 // 修改
	onUpdateConfirm: function() {
		var sm = this.getGrid().getSelectionModel();
		var record = sm.getLastSelected();
		var updateForm = this.getUpdateForm();
		var win = this.getUpdateWin();
		var store = this.getMainStore();
		if(updateForm.isValid()){// isValid对markInvalid不起作用
			updateForm.updateRecord(record);// 把form中的值写回到store中
			record.save({// save操作自动识别是增加还是修改操作，根据主键是否有值来判断的。
				 success: function(ed) {
				    this.onQuery();//重新加载一次grid
				    store.update(ed);// update操作会向通过proxy与服务器请求一次
					win.close();				     
				 },
				 failure: function(ed){
				 },
				 scope: this // 增加这句后，可以调用this.onQuery();
			});
		}
	},
	// 单条记录删除
	onRemove : function() {
		var grid = this.getGrid();
		var sm = grid.getSelectionModel();
		if (sm.getCount() == 1) {
			Ext.MessageBox.confirm("请确认", "是否真的要删除指定的记录？", function(button,text) {
				if (button == "yes") {
					var record = sm.getLastSelected();
					record.destroy({
						success : function() {
							this.getMainStore().remove(record);
						},
						failure : function() {
						},
						scope : this
					});
				}
			}, this);
		} else {
			Ext.Msg.alert("提示", "请选择您要删除的记录！");
		}
	}

});